"Les cours de neeko.fr"

Retour en haut

Les outils de gestion de versions (VCS)

Les outils de gestion de versions

Le meilleur ami du programmeur.

Travaux pratiques

Installer GIT

Pour les utilisateurs de Windows, il faut lancer l'application "GitBash". Pour les autres, utilisez le terminal.

Créer un compte BitBucket

Sur http://www.bitbucket.org.

Configuration

Pensez à préciser le même mail que pour BitBucket.

git config --global user.name "Robert Smith" git config --global user.email "robert@smith.com"

Créer un projet

Sur BitBucket, choisir "Create" dans la barre de menu.

Donnez un nom sans accents, sans espaces ni caractères spéciaux. Pour ce TP, on va utiliser le nom sandbox.

Seul le nom est obligatoire. A noter qu'il est possible d'utiliser un autre VCS : Mercurial.

Il est possible d'activer un wiki, et un système de suivi de ticket (issues tracking) pour chaque repository, c'est très pratique.

Attention à cocher la case "Private repository" si votre projet n'est pas open-source.

Mise en place du dépôt

D'abord, il faut créer sur votre machine un dossier qui contiendra le projet. C'est à vous de choisir l'emplacement.

Avec le terminal, rendez-vous dans le dossier vide que vous venez de créer.

Initiez le dépôt local avec la commande :

git init

On y défini le dépôt distant : Attention à indiquer la bonne adresse. Vous la trouverez sur la page de bitbucket, ou dans "i'm starting from scratch"

git remote add origin https://robert-smith@bitbucket.org/robert-smith/sandbox.git

Maintenant, nous avons un projet (vide), avec un dépôt local et un dépôt distant !

Ajouter le premier fichier

Créez un simple fichier "texte" et appellez le README.md.

Ecrivez une simple phrase à l'interieur : "Ceci est un projet pour tester GIT."

Ajouter le fichier

Vérifiez l'état actuel avec git status

git status

Ajoutez le fichier dans la zone "staging"

git add README.md

re-Vérifiez l'état actuel

git status

Valider ce fichier

git commit -m "Ajout du fichier d'information."

re-re-Vérifiez l'état actuel

git status

Vous pouvez aussi tester le log

git log

Enfin, publiez votre commit

git push origin master

"origin" corresponds au nom donné lors du "remote add". Il est possible d'avoir plusieurs remotes !

Le dépôt est publié

Regardez sur votre interface BitBucket, vous allez rapidement voir apparaitre votre commit, avec le commentaire.

Pour simuler un 2e utilisateur, nous allons cloner notre projet dans un autre dossier avec la même addresse que pour le "remote add", mais dans un autre dossier :

git clone https://robert-smith@bitbucket.org/robert-smith/sandbox.git sandbox2

Modifier

Dans le premier dossier, ajoutez un fichier Test.java qui contient le code suivant :

public class Test { public static void main(String[] args) { System.out.println("Test Start !"); for(int i=0; i < 5; i++) { System.out.println(i); } System.out.println("Test End."); } }

Une fois le fichier crée, faite en sorte, avec GIT, qu'il soit visible dans l'autre dossier, comme si vous travailliez à 2 sur ce projet.

Gérer les conflits

Une fois que le fichier est visible des 2 côtés et que les dépôts sont identiques, nous allons créer un conflit.

Modifiez dans un des dossiers le nombre de tours de la boucle : passez de 5 à 6 par exemple.

Publiez cette modification.

Sans mettre à jour, modifiez dans l'autre dossier le nombre en le passant de 5 à 4.

Tentez de publier cette modification : il y a conflit. A quel moment ? Comment GIT me l'indique ?

Editer à nouveau le fichier pour corriger le conflit en mettant une autre valeur, et publier le !

En bonus

Continuez à faire des modifications d'un côté pour les voir de l'autre. Générez des conflits. Modifiez une ligne et celle juste en dessus. Y a-t-il un conflit ?

Vous pouvez essayer aussi de récuperer les modification avec la commande git pull --rebase. Dans ce cas, vous verrez que ce qui générait un conflit avant ne le génere plus forcement ! Faites des essais !

Par exemple, supprimez une ligne d'un côté et modifiez cette ligne de l'autre. Cela générera un conflit, même avec un "rebase".